Introduction
Part of the appeal to DeFi is the ability to earn passive income by providing liquidity to different pools and earning a small portion of the fees collected from traders using said pools. The issue is that these yields vary based on demand for the assets in the pools. Some pools lure people in with absurd APYs, but ultimately do not sustain these returns.
We are interested in studying the volatility of these returns over time to see if there are any trends. This could shed more light into the pools you could potentially provide liquidity to.
Scope
For this hackathon, we’ve limited our scope to just studying the Uniswap V2 pools. Calculating volatility on these pools’ returns is relatively straightforward and there’s enough usage to provide an interesting analysis.
Volatility over 10/50/100 Days
These time periods were chosen arbitrarily. They’re aimed at providing a short/medium/long term volatility measure. This measure is calculated by computing the daily APY for each token pair and then taking a rolling standard deviation based on the window we’re interested in. We expect to see the short term volatility measure be more sporadic than the longer-term measures.
LS0tCnRpdGxlOiAiSGlzdG9yaWNhbCBZaWVsZCBWb2xhdGlsaXR5IC0tIFVuaXN3YXAgVjIgUG9vbHMiCmF1dGhvcjogIlZpbmNlIFRyb3N0IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIEludHJvZHVjdGlvbgoKUGFydCBvZiB0aGUgYXBwZWFsIHRvIERlRmkgaXMgdGhlIGFiaWxpdHkgdG8gZWFybiBwYXNzaXZlIGluY29tZSBieSBwcm92aWRpbmcgbGlxdWlkaXR5IHRvIGRpZmZlcmVudCBwb29scyBhbmQgZWFybmluZyBhIHNtYWxsIHBvcnRpb24gb2YgdGhlIGZlZXMgY29sbGVjdGVkIGZyb20gdHJhZGVycyB1c2luZyBzYWlkIHBvb2xzLiBUaGUgaXNzdWUgaXMgdGhhdCB0aGVzZSB5aWVsZHMgdmFyeSBiYXNlZCBvbiBkZW1hbmQgZm9yIHRoZSBhc3NldHMgaW4gdGhlIHBvb2xzLiBTb21lIHBvb2xzIGx1cmUgcGVvcGxlIGluIHdpdGggYWJzdXJkIEFQWXMsIGJ1dCB1bHRpbWF0ZWx5IGRvIG5vdCBzdXN0YWluIHRoZXNlIHJldHVybnMuICAKCldlIGFyZSBpbnRlcmVzdGVkIGluIHN0dWR5aW5nIHRoZSB2b2xhdGlsaXR5IG9mIHRoZXNlIHJldHVybnMgb3ZlciB0aW1lIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHRyZW5kcy4gVGhpcyBjb3VsZCBzaGVkIG1vcmUgbGlnaHQgaW50byB0aGUgcG9vbHMgeW91IGNvdWxkIHBvdGVudGlhbGx5IHByb3ZpZGUgbGlxdWlkaXR5IHRvLgoKIyBTY29wZQoKRm9yIHRoaXMgaGFja2F0aG9uLCB3ZSd2ZSBsaW1pdGVkIG91ciBzY29wZSB0byBqdXN0IHN0dWR5aW5nIHRoZSBVbmlzd2FwIFYyIHBvb2xzLiBDYWxjdWxhdGluZyB2b2xhdGlsaXR5IG9uIHRoZXNlIHBvb2xzJyByZXR1cm5zIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGFuZCB0aGVyZSdzIGVub3VnaCB1c2FnZSB0byBwcm92aWRlIGFuIGludGVyZXN0aW5nIGFuYWx5c2lzLgoKIyBWb2xhdGlsaXR5IG92ZXIgMTAvNTAvMTAwIERheXMKClRoZXNlIHRpbWUgcGVyaW9kcyB3ZXJlIGNob3NlbiBhcmJpdHJhcmlseS4gVGhleSdyZSBhaW1lZCBhdCBwcm92aWRpbmcgYSBzaG9ydC9tZWRpdW0vbG9uZyB0ZXJtIHZvbGF0aWxpdHkgbWVhc3VyZS4gVGhpcyBtZWFzdXJlIGlzIGNhbGN1bGF0ZWQgYnkgY29tcHV0aW5nIHRoZSBkYWlseSBBUFkgZm9yIGVhY2ggdG9rZW4gcGFpciBhbmQgdGhlbiB0YWtpbmcgYSByb2xsaW5nIHN0YW5kYXJkIGRldmlhdGlvbiBiYXNlZCBvbiB0aGUgd2luZG93IHdlJ3JlIGludGVyZXN0ZWQgaW4uIFdlIGV4cGVjdCB0byBzZWUgdGhlIHNob3J0IHRlcm0gdm9sYXRpbGl0eSBtZWFzdXJlIGJlIG1vcmUgc3BvcmFkaWMgdGhhbiB0aGUgbG9uZ2VyLXRlcm0gbWVhc3VyZXMuCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KbGlicmFyeShkYXRhLnRhYmxlKQpsaWJyYXJ5KHpvbykKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGx1YnJpZGF0ZSkKCmFhdmVfd2V0aCA8LSBmcmVhZCgiLi4vZGF0YS9wcm9jZXNzZWQvYWF2ZS13ZXRoLmNzdiIpCmRwaV93ZXRoIDwtIGZyZWFkKCIuLi9kYXRhL3Byb2Nlc3NlZC9kcGktd2V0aC5jc3YiKQptYXRpY193ZXRoIDwtIGZyZWFkKCIuLi9kYXRhL3Byb2Nlc3NlZC9tYXRpYy13ZXRoLmNzdiIpCnNjYW1teV93ZXRoIDwtIGZyZWFkKCIuLi9kYXRhL3Byb2Nlc3NlZC9zY2FtbXktd2V0aC5jc3YiKQpzdXNoaV93ZXRoIDwtIGZyZWFkKCIuLi9kYXRhL3Byb2Nlc3NlZC9zdXNoaS13ZXRoLmNzdiIpCnVzZGNfdXNkdCA8LSBmcmVhZCgiLi4vZGF0YS9wcm9jZXNzZWQvdXNkYy11c2R0LmNzdiIpCndidGNfd2V0aCA8LSBmcmVhZCgiLi4vZGF0YS9wcm9jZXNzZWQvd2J0Yy13ZXRoLmNzdiIpCndldGhfdXNkdCA8LSBmcmVhZCgiLi4vZGF0YS9wcm9jZXNzZWQvd2V0aC11c2R0LmNzdiIpCmRhaV93ZXRoIDwtIGZyZWFkKCIuLi9kYXRhL3Byb2Nlc3NlZC9kYWktd2V0aC5jc3YiKQpsaW5rX3dldGggPC0gZnJlYWQoIi4uL2RhdGEvcHJvY2Vzc2VkL2xpbmstd2V0aC5jc3YiKQpta3Jfd2V0aCA8LSBmcmVhZCgiLi4vZGF0YS9wcm9jZXNzZWQvbWtyLXdldGguY3N2IikKc2hpYl93ZXRoIDwtIGZyZWFkKCIuLi9kYXRhL3Byb2Nlc3NlZC9zaGliLXdldGguY3N2IikKdW5pX3dldGggPC0gZnJlYWQoIi4uL2RhdGEvcHJvY2Vzc2VkL3VuaS13ZXRoLmNzdiIpCnVzZGNfd2V0aCA8LSBmcmVhZCgiLi4vZGF0YS9wcm9jZXNzZWQvdXNkYy13ZXRoLmNzdiIpCndlbHBfd2V0aCA8LSBmcmVhZCgiLi4vZGF0YS9wcm9jZXNzZWQvd2VscC13ZXRoLmNzdiIpCnlmaV93ZXRoIDwtIGZyZWFkKCIuLi9kYXRhL3Byb2Nlc3NlZC95Zmktd2V0aC5jc3YiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojIGNhdGVnb3JpemUgdGhlIHBvb2xzIGZvciBlYXNpZXIgYW5hbHlzaXMKc3RhYmxlX3Bvb2xzIDwtIHJiaW5kKHdldGhfdXNkdCwgd2J0Y193ZXRoLCB1c2RjX3VzZHQsIHVzZGNfd2V0aCwgZGFpX3dldGgpCmRlZmlfYmx1ZWNoaXBzIDwtIHJiaW5kKGFhdmVfd2V0aCwgbGlua193ZXRoLCB1bmlfd2V0aCwgeWZpX3dldGgsIHN1c2hpX3dldGgsIG1rcl93ZXRoLCBtYXRpY193ZXRoKQptZW1lY29pbnMgPC0gcmJpbmQoc2NhbW15X3dldGgsIHNoaWJfd2V0aCwgd2VscF93ZXRoKQoKIyBjb252ZXJ0IHRoZSBkYXRlcyB0byBodW1hbiByZWFkYWJsZSBmb3JtYXQKc3RhYmxlX3Bvb2xzJGRhdGUgPC0gYXNfZGF0ZXRpbWUoc3RhYmxlX3Bvb2xzJGRhdGUpCmRlZmlfYmx1ZWNoaXBzJGRhdGUgPC0gYXNfZGF0ZXRpbWUoZGVmaV9ibHVlY2hpcHMkZGF0ZSkKZGVmaV9ibHVlY2hpcHMkZGF0ZSA8LSBhc19kYXRldGltZShkZWZpX2JsdWVjaGlwcyRkYXRlKQoKYGBgCgoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMgY29tcHV0ZSB0aGUgQVBZIGJ5IGRheQpzdGFibGVfcG9vbHNbLCBkYWlseV9BUFkgOj0gKChkYWlseVZvbHVtZVVTRCowLjAwMykvcmVzZXJ2ZVVTRCkqMzY1LCAKICAgICAgICAgICAgIGJ5PS4odG9rZW4wLCB0b2tlbjEsIGRhdGUpXQpkZWZpX2JsdWVjaGlwc1ssIGRhaWx5X0FQWSA6PSAoKGRhaWx5Vm9sdW1lVVNEKjAuMDAzKS9yZXNlcnZlVVNEKSozNjUsIAogICAgICAgICAgICAgICBieT0uKHRva2VuMCwgdG9rZW4xLCBkYXRlKV0KbWVtZWNvaW5zWywgZGFpbHlfQVBZIDo9ICgoZGFpbHlWb2x1bWVVU0QqMC4wMDMpL3Jlc2VydmVVU0QpKjM2NSwgCiAgICAgICAgICBieT0uKHRva2VuMCwgdG9rZW4xLCBkYXRlKV0KCiMgY29tcHV0ZSB0aGUgZGFpbHkgcmV0dXJuICUgKGp1c3QgZG9uJ3QgbXVsdGlwbHkgYnkgMzY1KQpzdGFibGVfcG9vbHNbLCBkYWlseV9yZXR1cm4gOj0gKChkYWlseVZvbHVtZVVTRCowLjAwMykvcmVzZXJ2ZVVTRCksIAogICAgICAgICAgICAgYnk9Lih0b2tlbjAsIHRva2VuMSwgZGF0ZSldCmRlZmlfYmx1ZWNoaXBzWywgZGFpbHlfcmV0dXJuIDo9ICgoZGFpbHlWb2x1bWVVU0QqMC4wMDMpL3Jlc2VydmVVU0QpLCAKICAgICAgICAgICAgICAgYnk9Lih0b2tlbjAsIHRva2VuMSwgZGF0ZSldCm1lbWVjb2luc1ssIGRhaWx5X3JldHVybiA6PSAoKGRhaWx5Vm9sdW1lVVNEKjAuMDAzKS9yZXNlcnZlVVNEKSwgCiAgICAgICAgICBieT0uKHRva2VuMCwgdG9rZW4xLCBkYXRlKV0KYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KIyByZS1vcmRlciBkZXNjIGJ5IGRhdGUKc3RhYmxlX3Bvb2xzIDwtIHN0YWJsZV9wb29sc1tvcmRlcihkYXRlKV0KZGVmaV9ibHVlY2hpcHMgPC0gZGVmaV9ibHVlY2hpcHNbb3JkZXIoZGF0ZSldCm1lbWVjb2lucyA8LSBtZW1lY29pbnNbb3JkZXIoZGF0ZSldCmBgYAoKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojIGNvbXB1dGUgdGhlIHJvbGxpbmcgc2QncwoKIyAxMCBkYXkKc3RhYmxlX3Bvb2xzWywgdGVuX2RheV9hcHlfc2Q6PSByb2xsYXBwbHkoZGFpbHlfQVBZLCB3aWR0aD0xMCwgRlVOPXNkLCBmaWxsPTAsIGFsaWduPSJyaWdodCIpLCAKICAgICAgICAgICAgIGJ5PS4odG9rZW4wLCB0b2tlbjEpXQojIDUwIGRheQpzdGFibGVfcG9vbHNbLCBmaWZ0eV9kYXlfYXB5X3NkOj0gcm9sbGFwcGx5KGRhaWx5X0FQWSwgd2lkdGg9NTAsIEZVTj1zZCwgZmlsbD0wLCBhbGlnbj0icmlnaHQiKSwgCiAgICAgICAgICAgICBieT0uKHRva2VuMCwgdG9rZW4xKV0KIyAxMDAgZGF5CnN0YWJsZV9wb29sc1ssIGh1bmRyZWRfZGF5X2FweV9zZDo9IHJvbGxhcHBseShkYWlseV9BUFksIHdpZHRoPTEwMCwgRlVOPXNkLCBmaWxsPTAsIGFsaWduPSJyaWdodCIpLAogICAgICAgICAgICAgYnk9Lih0b2tlbjAsIHRva2VuMSldCgojIDEwIGRheQpkZWZpX2JsdWVjaGlwc1ssIHRlbl9kYXlfYXB5X3NkOj0gcm9sbGFwcGx5KGRhaWx5X0FQWSwgd2lkdGg9MTAsIEZVTj1zZCwgZmlsbD0wLCBhbGlnbj0icmlnaHQiKSwKICAgICAgICAgICAgIGJ5PS4odG9rZW4wLCB0b2tlbjEpXQojIDUwIGRheQpkZWZpX2JsdWVjaGlwc1ssIGZpZnR5X2RheV9hcHlfc2Q6PSByb2xsYXBwbHkoZGFpbHlfQVBZLCB3aWR0aD01MCwgRlVOPXNkLCBmaWxsPTAsIGFsaWduPSJyaWdodCIpLCAKICAgICAgICAgICAgIGJ5PS4odG9rZW4wLCB0b2tlbjEpXQojIDEwMCBkYXkKZGVmaV9ibHVlY2hpcHNbLCBodW5kcmVkX2RheV9hcHlfc2Q6PXJvbGxhcHBseShkYWlseV9BUFksIHdpZHRoPTEwMCwgRlVOPXNkLCBmaWxsPTAsIGFsaWduPSJyaWdodCIpLAogICAgICAgICAgICAgYnk9Lih0b2tlbjAsIHRva2VuMSldCgojIDEwIGRheQptZW1lY29pbnNbLCB0ZW5fZGF5X2FweV9zZDo9IHJvbGxhcHBseShkYWlseV9BUFksIHdpZHRoPTEwLCBGVU49c2QsIGZpbGw9MCwgYWxpZ249InJpZ2h0IiksIAogICAgICAgICAgICAgYnk9Lih0b2tlbjAsIHRva2VuMSldCiMgNTAgZGF5Cm1lbWVjb2luc1ssIGZpZnR5X2RheV9hcHlfc2Q6PSByb2xsYXBwbHkoZGFpbHlfQVBZLCB3aWR0aD01MCwgRlVOPXNkLCBmaWxsPTAsIGFsaWduPSJyaWdodCIpLCAKICAgICAgICAgICAgIGJ5PS4odG9rZW4wLCB0b2tlbjEpXQojIDEwMCBkYXkKbWVtZWNvaW5zWywgaHVuZHJlZF9kYXlfYXB5X3NkOj0gcm9sbGFwcGx5KGRhaWx5X0FQWSwgd2lkdGg9MTAwLCBGVU49c2QsIGZpbGw9MCwgYWxpZ249InJpZ2h0IiksIAogICAgICAgICAgICAgYnk9Lih0b2tlbjAsIHRva2VuMSldCmBgYAoKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojIHJlLWZvcm1hdCB0aGUgZGF0YSBmb3IgcGxvdHRpbmcKc3RhYmxlIDwtIG1lbHQoc3RhYmxlX3Bvb2xzWywgLihkYXRlLCB0b2tlbjAsIHRva2VuMSwgZGFpbHlfQVBZLCB0ZW5fZGF5X2FweV9zZCwgZmlmdHlfZGF5X2FweV9zZCwgaHVuZHJlZF9kYXlfYXB5X3NkKV0sIGlkLnZhcnMgPSBjKCJkYXRlIiwgInRva2VuMCIsICJ0b2tlbjEiKSkKYmx1ZWNoaXBzIDwtIG1lbHQoZGVmaV9ibHVlY2hpcHNbLC4oZGF0ZSwgdG9rZW4wLCB0b2tlbjEsIGRhaWx5X0FQWSwgdGVuX2RheV9hcHlfc2QsIGZpZnR5X2RheV9hcHlfc2QsIGh1bmRyZWRfZGF5X2FweV9zZCldLCBpZC52YXJzID0gYygiZGF0ZSIsICJ0b2tlbjAiLCAidG9rZW4xIikpCm1lbWVzIDwtIG1lbHQobWVtZWNvaW5zWywuKGRhdGUsIHRva2VuMCwgdG9rZW4xLCBkYWlseV9BUFksIHRlbl9kYXlfYXB5X3NkLCBmaWZ0eV9kYXlfYXB5X3NkLCBodW5kcmVkX2RheV9hcHlfc2QpXSwgaWQudmFycyA9IGMoImRhdGUiLCAidG9rZW4wIiwgInRva2VuMSIpKQpgYGAKCgojIFBsb3RzIC0tIFN0YWJsZSBQb29scwoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CiMgUExPVApnZ3Bsb3QoZGF0YT1zdGFibGVbdG9rZW4wID09ICJVU0RDIiAmIHRva2VuMSA9PSAiV0VUSCIgJiB2YXJpYWJsZSAhPSAiZGFpbHlfQVBZIl0sIGFlcyh4PWRhdGUsIHk9dmFsdWUsIGNvbG91cj12YXJpYWJsZSkpICsgCiAgZ2VvbV9saW5lKHNpemU9MSkgKwogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygwLCAxLjMpKSArCiAgZ2VvbV9saW5lKGRhdGE9c3RhYmxlW3Rva2VuMCA9PSAiVVNEQyIgJiB0b2tlbjEgPT0gIldFVEgiICYgdmFyaWFibGUgPT0gImRhaWx5X0FQWSJdLCBhbHBoYT0wLjQpICsKICBnZ3RpdGxlKCJVU0RDLVdFVEggMTAvNTAvMTAwIERheSBBUFkgVm9sYXRpbGl0aWVzIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KZ2dwbG90KGRhdGE9c3RhYmxlW3Rva2VuMCA9PSAiREFJIiAmIHRva2VuMSA9PSAiV0VUSCIgJiB2YXJpYWJsZSAhPSAiZGFpbHlfQVBZIl0sIGFlcyh4PWRhdGUsIHk9dmFsdWUsIGNvbG91cj12YXJpYWJsZSkpICsgCiAgZ2VvbV9saW5lKHNpemU9MSkgKwogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygwLCAxLjMpKSArCiAgZ2VvbV9saW5lKGRhdGE9c3RhYmxlW3Rva2VuMCA9PSAiREFJIiAmIHRva2VuMSA9PSAiV0VUSCIgJiB2YXJpYWJsZSA9PSAiZGFpbHlfQVBZIl0sIGFscGhhPTAuNCkgKwogIGdndGl0bGUoIkRBSS1XRVRIIDEwLzUwLzEwMCBEYXkgQVBZIFZvbGF0aWxpdGllcyIpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmdncGxvdChkYXRhPXN0YWJsZVt0b2tlbjAgPT0gIldCVEMiICYgdG9rZW4xID09ICJXRVRIIiAmIHZhcmlhYmxlICE9ICJkYWlseV9BUFkiXSwgYWVzKHg9ZGF0ZSwgeT12YWx1ZSwgY29sb3VyPXZhcmlhYmxlKSkgKyAKICBnZW9tX2xpbmUoc2l6ZT0xKSArCiAgY29vcmRfY2FydGVzaWFuKHlsaW0gPSBjKDAsIDEuMykpICsKICBnZW9tX2xpbmUoZGF0YT1zdGFibGVbdG9rZW4wID09ICJXQlRDIiAmIHRva2VuMSA9PSAiV0VUSCIgJiB2YXJpYWJsZSA9PSAiZGFpbHlfQVBZIl0sIGFscGhhPTAuNCkgKwogIGdndGl0bGUoIldCVEMtV0VUSCAxMC81MC8xMDAgRGF5IEFQWSBWb2xhdGlsaXRpZXMiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpnZ3Bsb3QoZGF0YT1zdGFibGVbdG9rZW4wID09ICJVU0RDIiAmIHRva2VuMSA9PSAiVVNEVCIgJiB2YXJpYWJsZSAhPSAiZGFpbHlfQVBZIl0sIGFlcyh4PWRhdGUsIHk9dmFsdWUsIGNvbG91cj12YXJpYWJsZSkpICsgCiAgZ2VvbV9saW5lKHNpemU9MSkgKwogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygwLCAxLjMpKSArCiAgZ2VvbV9saW5lKGRhdGE9c3RhYmxlW3Rva2VuMCA9PSAiVVNEQyIgJiB0b2tlbjEgPT0gIlVTRFQiICYgdmFyaWFibGUgPT0gImRhaWx5X0FQWSJdLCBhbHBoYT0wLjQpICsKICBnZ3RpdGxlKCJVU0RDLVVTRFQgMTAvNTAvMTAwIERheSBBUFkgVm9sYXRpbGl0aWVzIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KZ2dwbG90KGRhdGE9c3RhYmxlW3Rva2VuMCA9PSAiV0VUSCIgJiB0b2tlbjEgPT0gIlVTRFQiICYgdmFyaWFibGUgIT0gImRhaWx5X0FQWSJdLCBhZXMoeD1kYXRlLCB5PXZhbHVlLCBjb2xvdXI9dmFyaWFibGUpKSArIAogIGdlb21fbGluZShzaXplPTEpICsKICBjb29yZF9jYXJ0ZXNpYW4oeWxpbSA9IGMoMCwgMS4zKSkgKwogIGdlb21fbGluZShkYXRhPXN0YWJsZVt0b2tlbjAgPT0gIldFVEgiICYgdG9rZW4xID09ICJVU0RUIiAmIHZhcmlhYmxlID09ICJkYWlseV9BUFkiXSwgYWxwaGE9MC40KSArCiAgZ2d0aXRsZSgiV0VUSC1VU0RUIDEwLzUwLzEwMCBEYXkgQVBZIFZvbGF0aWxpdGllcyIpCmBgYAoKIyBQbG90cyAtLSBEZUZpIEJsdWVjaGlwcwoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmdncGxvdChkYXRhPWJsdWVjaGlwc1t0b2tlbjAgPT0gIkxJTksiICYgdG9rZW4xID09ICJXRVRIIiAmIHZhcmlhYmxlICE9ICJkYWlseV9BUFkiXSwgYWVzKHg9ZGF0ZSwgeT12YWx1ZSwgY29sb3VyPXZhcmlhYmxlKSkgKyAKICBnZW9tX2xpbmUoc2l6ZT0xKSArCiAgY29vcmRfY2FydGVzaWFuKHlsaW0gPSBjKDAsIDEuMykpICsKICBnZW9tX2xpbmUoZGF0YT1ibHVlY2hpcHNbdG9rZW4wID09ICJMSU5LIiAmIHRva2VuMSA9PSAiV0VUSCIgJiB2YXJpYWJsZSA9PSAiZGFpbHlfQVBZIl0sIGFscGhhPTAuNCkgKwogIGdndGl0bGUoIkxJTkstV0VUSCAxMC81MC8xMDAgRGF5IEFQWSBWb2xhdGlsaXRpZXMiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpnZ3Bsb3QoZGF0YT1ibHVlY2hpcHNbdG9rZW4wID09ICJNS1IiICYgdG9rZW4xID09ICJXRVRIIiAmIHZhcmlhYmxlICE9ICJkYWlseV9BUFkiXSwgYWVzKHg9ZGF0ZSwgeT12YWx1ZSwgY29sb3VyPXZhcmlhYmxlKSkgKyAKICBnZW9tX2xpbmUoc2l6ZT0xKSArCiAgY29vcmRfY2FydGVzaWFuKHlsaW0gPSBjKDAsIDEuMykpICsKICBnZW9tX2xpbmUoZGF0YT1ibHVlY2hpcHNbdG9rZW4wID09ICJNS1IiICYgdG9rZW4xID09ICJXRVRIIiAmIHZhcmlhYmxlID09ICJkYWlseV9BUFkiXSwgYWxwaGE9MC40KSArCiAgZ2d0aXRsZSgiTUtSLVdFVEggMTAvNTAvMTAwIERheSBBUFkgVm9sYXRpbGl0aWVzIikKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0KZ2dwbG90KGRhdGE9Ymx1ZWNoaXBzW3Rva2VuMCA9PSAiTUFUSUMiICYgdG9rZW4xID09ICJXRVRIIiAmIHZhcmlhYmxlICE9ICJkYWlseV9BUFkiXSwgYWVzKHg9ZGF0ZSwgeT12YWx1ZSwgY29sb3VyPXZhcmlhYmxlKSkgKyAKICBnZW9tX2xpbmUoc2l6ZT0xKSArCiAgY29vcmRfY2FydGVzaWFuKHlsaW0gPSBjKDAsIDEuMykpICsKICBnZW9tX2xpbmUoZGF0YT1ibHVlY2hpcHNbdG9rZW4wID09ICJNQVRJQyIgJiB0b2tlbjEgPT0gIldFVEgiICYgdmFyaWFibGUgPT0gImRhaWx5X0FQWSJdLCBhbHBoYT0wLjQpICsKICBnZ3RpdGxlKCJNQVRJQy1XRVRIIDEwLzUwLzEwMCBEYXkgQVBZIFZvbGF0aWxpdGllcyIpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmdncGxvdChkYXRhPWJsdWVjaGlwc1t0b2tlbjAgPT0gIllGSSIgJiB0b2tlbjEgPT0gIldFVEgiICYgdmFyaWFibGUgIT0gImRhaWx5X0FQWSJdLCBhZXMoeD1kYXRlLCB5PXZhbHVlLCBjb2xvdXI9dmFyaWFibGUpKSArIAogIGdlb21fbGluZShzaXplPTEpICsKICBjb29yZF9jYXJ0ZXNpYW4oeWxpbSA9IGMoMCwgMykpICsKICBnZW9tX2xpbmUoZGF0YT1ibHVlY2hpcHNbdG9rZW4wID09ICJZRkkiICYgdG9rZW4xID09ICJXRVRIIiAmIHZhcmlhYmxlID09ICJkYWlseV9BUFkiXSwgYWxwaGE9MC40KSArCiAgZ2d0aXRsZSgiWUZJLVdFVEggMTAvNTAvMTAwIERheSBBUFkgVm9sYXRpbGl0aWVzICgqKlNDQUxFIElOQ1JFQVNFRCkiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpnZ3Bsb3QoZGF0YT1ibHVlY2hpcHNbdG9rZW4wID09ICJTVVNISSIgJiB0b2tlbjEgPT0gIldFVEgiICYgdmFyaWFibGUgIT0gImRhaWx5X0FQWSJdLCBhZXMoeD1kYXRlLCB5PXZhbHVlLCBjb2xvdXI9dmFyaWFibGUpKSArIAogIGdlb21fbGluZShzaXplPTEpICsKICBjb29yZF9jYXJ0ZXNpYW4oeWxpbSA9IGMoMCwgMTMpKSArCiAgZ2VvbV9saW5lKGRhdGE9Ymx1ZWNoaXBzW3Rva2VuMCA9PSAiU1VTSEkiICYgdG9rZW4xID09ICJXRVRIIiAmIHZhcmlhYmxlID09ICJkYWlseV9BUFkiXSwgYWxwaGE9MC40KSArCiAgZ2d0aXRsZSgiU1VTSEktV0VUSCAxMC81MC8xMDAgRGF5IEFQWSBWb2xhdGlsaXRpZXMgKCoqU0NBTEUgSU5DUkVBU0VEKSIpCmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmdncGxvdChkYXRhPWJsdWVjaGlwc1t0b2tlbjAgPT0gIlVOSSIgJiB0b2tlbjEgPT0gIldFVEgiICYgdmFyaWFibGUgIT0gImRhaWx5X0FQWSJdLCBhZXMoeD1kYXRlLCB5PXZhbHVlLCBjb2xvdXI9dmFyaWFibGUpKSArIAogIGdlb21fbGluZShzaXplPTEpICsKICBjb29yZF9jYXJ0ZXNpYW4oeWxpbSA9IGMoMCwgMS4zKSkgKwogIGdlb21fbGluZShkYXRhPWJsdWVjaGlwc1t0b2tlbjAgPT0gIlVOSSIgJiB0b2tlbjEgPT0gIldFVEgiICYgdmFyaWFibGUgPT0gImRhaWx5X0FQWSJdLCBhbHBoYT0wLjQpICsKICBnZ3RpdGxlKCJVTkktV0VUSCAxMC81MC8xMDAgRGF5IEFQWSBWb2xhdGlsaXRpZXMiKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpnZ3Bsb3QoZGF0YT1ibHVlY2hpcHNbdG9rZW4wID09ICJBQVZFIiAmIHRva2VuMSA9PSAiV0VUSCIgJiB2YXJpYWJsZSAhPSAiZGFpbHlfQVBZIl0sIGFlcyh4PWRhdGUsIHk9dmFsdWUsIGNvbG91cj12YXJpYWJsZSkpICsgCiAgZ2VvbV9saW5lKHNpemU9MSkgKwogIGNvb3JkX2NhcnRlc2lhbih5bGltID0gYygwLCAxLjMpKSArCiAgZ2VvbV9saW5lKGRhdGE9Ymx1ZWNoaXBzW3Rva2VuMCA9PSAiQUFWRSIgJiB0b2tlbjEgPT0gIldFVEgiICYgdmFyaWFibGUgPT0gImRhaWx5X0FQWSJdLCBhbHBoYT0wLjQpICsKICBnZ3RpdGxlKCJBQVZFLVdFVEggMTAvNTAvMTAwIERheSBBUFkgVm9sYXRpbGl0aWVzIikKYGBgCgo=